package com.wzdigit.wms.basic.client.response.transfer;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.wzdigit.wms.basic.client.BasicResponse;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 发货单,GDN=Goods Delivery Notes
 * </p>
 *
 * @author 
 * @since 2021-02-22
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler", "fieldHandler" }, ignoreUnknown = false)
public class GdnHeaderListResponse extends BasicResponse {

    private static final long serialVersionUID = 1L;

    /**
     * 发货单表头ID
     */
    @ApiModelProperty("发货单表头ID")
    private Integer gdnHeaderId;

    /**
     * 发货单单号
     */
    @ApiModelProperty("发货单单号")
    private String gdnNo;

    /**
     * GDN 类型 － GDN 的单据类型，可区分不同操作类型、不同来源等的入库单据。系统
提供普通入库、生产收货、退货入库等多种类型，用户可根据需要在系统代码中增加类型。
     */
    @ApiModelProperty("GDN类型")
    private String gdnType;

    @ApiModelProperty("GDN类型(中文描述)")
    private String gdnTypeCn;

    /**
     * 来源发货通知单
     */
    @ApiModelProperty("来源发货通知单")
    private String sourceShipNotice;

    /**
     * 参考柜号
     */
    @ApiModelProperty("参考柜号")
    private String refCntrNo;
    
    /**
     * 实际柜号
     */
    @ApiModelProperty("实际柜号")
    private String cntrNo;

    /**
     * 柜型
     */
    @ApiModelProperty("柜型")
    private String cntrType;

    /**
     * 优先级－订单作业优先级。常用于 RF 操作，任务队列排序中。紧急订单可排序在前。
     */
    @ApiModelProperty("优先级")
    private Integer priority;

    /**
     * 货主ID，客户主数据中 客户类型=货主，取客户ID
     */
    @ApiModelProperty("货主ID")
    private Integer owner;

    /**
     * 客户ID
     */
    @ApiModelProperty("客户ID")
    private Integer customer;
    
    /**
     * 工厂(组织)
     */
    @ApiModelProperty("工厂(组织)")
    private String factory;

    /**
     * 发货日期
     */
    @ApiModelProperty("发货日期")
    private Date shipDate;

    /**
     * 发货港
     */
    @ApiModelProperty("发货港")
    private String shipPort;

    /**
     * 到货港
     */
    @ApiModelProperty("到货港")
    private String arrivePort;

    /**
     * 截关日期
     */
    @ApiModelProperty("截关日期")
    private Date closingDate;

    /**
     * 发货单打印
     */
    @ApiModelProperty("发货单打印")
    private Integer gdnPrint;

    /**
     * 装柜联络单打印标识
     */
    @ApiModelProperty("装柜联络单打印标识")
    private Integer loadingDocPrint;

    /**
     * 余留单打印标识
     */
    @ApiModelProperty("余留单打印标识")
    private Integer remainDocPrint;

    /**
     * 销售类型，内销：1，外销：2
     */
    @ApiModelProperty("销售类型，内销：1，外销：2")
    private Integer saleType;

    /**
     * 序列号采集
     */
    @ApiModelProperty("序列号采集")
    private Integer snScan;

    /**
     * 交货地
     */
    @ApiModelProperty("交货地")
    private String placeOfDelivery;
    
    /**
     * 出库国
     */
    @ApiModelProperty("出库国")
    private String exportCountry;

    /**
     * 释放状态
     */
    @ApiModelProperty("释放状态")
    private Integer releaseFlag;

    /**
     * 承运人
     */
    @ApiModelProperty("承运人")
    private String carrierId;

    /**
     * 下单方
     */
    @ApiModelProperty("下单方")
    private String issuePartyId;

    /**
     * 业务担当
     */
    @ApiModelProperty("业务担当")
    private String followUp;

    /**
     * 订单来源
     */
    @ApiModelProperty("订单来源")
    private String dataSource;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String comments;

    /**
     * 发货单状态
     */
    @ApiModelProperty("发货单状态")
    private Integer status;

    /**
     * 发货单状态(中文)
     */
    @ApiModelProperty("发货单状态")
    private String  statusCn;
    
    /**
     * 客户名称
     */
    @ApiModelProperty("客户名称")
    private String customerName;
    
    /**
     * 需求数量
     */
    @ApiModelProperty("需求数量")
    private BigDecimal orderQty;
    /**
     * 预配数量
     */
    @ApiModelProperty("预配数量")
    private BigDecimal preAlocQty;
    /**
     * 拣选数量
     */
    @ApiModelProperty("拣选数量")
    private BigDecimal pickQty;
    /**
     * 发货数量
     */
    @ApiModelProperty("发货数量")
    private BigDecimal shipQty;
    
    /**
     * 余留数量
     */
    @ApiModelProperty("余留数量")
    private BigDecimal remainQty;
    
    /**
     * 发货单状态
     */
    @ApiModelProperty("拣货进度")
    private BigDecimal progress;
    

    /**
     * 是否可以打印【发货单】
     */
    @ApiModelProperty("是否可以打印【发货单】")
    private Boolean printInvoice;
    
    /**
     * 
     * 是否可以打印【余留单】
     */
    @ApiModelProperty("是否可以打印【余留单】")
    private Boolean printRemain;
    
    /**
     * 
     * 是否可以【下发拣货】
     */
    @ApiModelProperty("是否可以【下发拣货】")
    private Boolean isCreatePicktask;

    @ApiModelProperty("领料部门")
    private String rcvDept;

    @ApiModelProperty("供应商ID")
    private String consigneeID;

    @ApiModelProperty("供应商名称")
    private String consigneeName;

    @ApiModelProperty("创建时间")
    private Date createTime;

    @ApiModelProperty("创建人")
    private String createUser;

    @ApiModelProperty("创建时间")
    private Date approvedTime;

    @ApiModelProperty("创建人")
    private String approvedUser;


    @ApiModelProperty("仓库")
    private String warehouse;

    @ApiModelProperty("回传TMS标识,0未回传,1已回传[回传成功则回传TMS按钮不能点击]")
    private Integer tmsFlag;






}
